Overview of the C Preprocessor

Contents|Index|Next
Overview of the C preprocessor

The C preprocessor is a macro processor that is used automatically by the C compiler to transform your program before actual compilation. It is called a macro processor because it allows you to define macros, which are brief abbreviations for longer constructs. The following documentation details the C preprocessor, `cpp`.

- What the C preprocessor provides
- Transformations made globally
- Preprocessing directives
- Header files
- Macros
- Conditionals
- Combining source files
- Miscellaneous preprocessing directives
- C preprocessor output
- Invoking the C preprocessor

What the C preprocessor provides

The C preprocessor provides the following four separate facilities that you can use as you see fit.

- Inclusion of header files
These are files of declarations that can be substituted into your program.
- Macro expansion
You can define macros, which are abbreviations for arbitrary fragments of C code, and then the C preprocessor will replace the macros with their definitions throughout the program.
- Conditional compilation
Using special preprocessing directives, you can include or exclude parts of the program according to various conditions.
- Line control
If you use a program to combine or rearrange source files into an intermediate file which is then compiled, you can use line control to inform the compiler of each source line’s origin.

C preprocessors vary in some details. This manual discusses the GNU C preprocessor, the C Compatible Compiler Preprocessor. The GNU C preprocessor provides a superset of the features of ANSI Standard C.

ANSI Standard C requires the rejection of many harmless constructs commonly used by today’s C programs. Such incompatibility would be inconvenient for users, so the GNU C preprocessor is configured to accept these constructs by default. To get ANSI Standard C, you must use the options -trigraphs, -undefand -pedantic, but, in practice, the consequences of having strict ANSI Standard C make it undesirable to do this. See Invoking the C preprocessor.

Top|Contents|Index|Next